#include<iostream>
#include<vector>
#include<queue>
#include<stack>
using namespace std;
const int maxn=32;
int N,post[maxn],in[maxn];
struct node{
    int data;
    int layer;
    node* lchild=NULL;
    node* rchild=NULL;
};

node* create(int inL,int inR,int postL,int postR){
    if(inL>inR || postL>postR) return NULL;
    node* root=new node;
    int k=post[postR];
    root->data=k;
    int idx;
    for(int i=inL;i<=inR;i++){
        if(in[i]==k) {idx=i;break;}
    }
    root->lchild=create(inL,idx-1,postL,postL+idx-inL-1);
    root->rchild=create(idx+1,inR,postL+idx-inL,postR-1);
    return root;
}

void zigzag(node* root){
    queue<node*> que;
    while(!que.empty())que.pop();
    root->layer=1;
    vector<node*> path;
    vector<int> ans;
    bool flag=false;
    que.push(root);
    node* tmp;
    while(!que.empty()){
        tmp=que.front();que.pop();
        if(tmp->layer%2!=0 && flag==false){
            for(int i=0;i<path.size();i++){
                ans.push_back(path[i]->data);
            }
            path.clear();
            flag=true;
        }
        if(tmp->layer%2==0 && flag==true){
            for(int i=path.size()-1;i>=0;i--){
                ans.push_back(path[i]->data);
            }
            path.clear();
            flag=false;
        }
        path.push_back(tmp);
        if(tmp->lchild!=NULL){
            tmp->lchild->layer=tmp->layer+1;
            que.push(tmp->lchild);
        }
        if(tmp->rchild!=NULL){
            tmp->rchild->layer=tmp->layer+1;
            que.push(tmp->rchild);
        }
    }
    if(path[0]->layer%2!=0){
        for(int i=path.size()-1;i>=0;i--){
                ans.push_back(path[i]->data);
            }
    }
    else{
        for(int i=0;i<path.size();i++){
                ans.push_back(path[i]->data);
            }
    }
    for(int i=0;i<ans.size();i++){
        if(i==0){printf("%d",ans[i]);}
        else{printf(" %d",ans[i]);}
    }

}

int main(){
    //freopen("in.txt","r",stdin);
    scanf("%d",&N);
    for(int i=0;i<N;i++){
        scanf("%d",&in[i]);
    }
    for(int i=0;i<N;i++){
        scanf("%d",&post[i]);
    }
    node* root=new node;
    root=create(0,N-1,0,N-1);
    zigzag(root);
}
